`rotor-light` is real-time platform-neutral, C++ actor micro-framework for
embedded systems with supervising capabilities.

`rotor-light` is built with the concurrency in the mind, i.e. independent
entities (actors) interact each other via messages.

`rotor-light` is adoption of [rotor](https://github.com/basiliscos/cpp-rotor)
framework for embedded systems. The framework has no platform-dependent
code, so, it can, however, be used as is on host system, if you cautiously
care about thread-safety.

## features

 - erlang-like hierarchical supervisors

 - asynchronous messaging with priorities

 - plaform-agnostic code (including timers)

 - C++17

 - no thread-safety

 - no allocations, no exceptions, no RTTI

 - non-intrusiveness

 - compile-time actor hierarchies 

## ping-pong messaging performance & .text section size


|                       | messages/second | binary size
|:---------------------:|:---------------:|:--------------:
| host (1)              | ~47.7M          | 13026 bytes
| Arduino Uno R3        | ~10.0K          | 8872 bytes
| xilinx microblaze (2) | ~58.8K          | 42868 byes
| STM32-H743ZI          |  ...            | 13724 bytes

All examples can be measured with `examples/ping-pong-throughput.cpp`,
compiled with `CMAKE_BUILD_TYPE=MinSizeRel` and the stripped

(1) Setup: Intel Core i7-8550U, Void Linux 5.15.

(2) Zynq xc7z020clg400-1, QMTECH development board. Microblaze standard config, hw mul/div instr. enabled, clocking is 50Mhz.

## license

MIT
